// --------------------------------------------------------------------------------------------------------------------
// <copyright file="Enums.cs" company="SmartPlan">
//   SmartPlan 2011
// </copyright>
// <summary>
//   The script option type.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace DbDiff.Common.Helper
{
    using System;
    using System.Runtime.Serialization;

    #region scriptoptiontype

    /// <summary>
    /// The script option type.
    /// </summary>
    [DataContract]
    public enum ScriptOptionType
    {
        /// <summary>
        /// The alter optiontype.
        /// </summary>
        [EnumMember]
        Alter = 1,

        /// <summary>
        /// The drop optiontype.
        /// </summary>
        [EnumMember]
        Drop = 2,

        /// <summary>
        /// The table_ indexes.
        /// </summary>
        [EnumMember]
        Table_Indexes = 4,

        /// <summary>
        /// The table_ foreign keys.
        /// </summary>
        [EnumMember]
        Table_ForeignKeys = 8,

        /// <summary>
        /// The table_ primary key.
        /// </summary>
        [EnumMember]
        Table_PrimaryKey = 16,

        /// <summary>
        /// The table_ defaults.
        /// </summary>
        [EnumMember]
        Table_Defaults = 32,

        /// <summary>
        /// The table_ checks.
        /// </summary>
        [EnumMember]
        Table_Checks = 64,

        /// <summary>
        /// The table_ base types.
        /// </summary>
        [EnumMember]
        Table_BaseTypes = 128,

        /// <summary>
        /// The table_ rules.
        /// </summary>
        [EnumMember]
        Table_Rules = 256,

        /// <summary>
        /// The table_ bind defaults.
        /// </summary>
        [EnumMember]
        Table_BindDefaults = 512,

        /// <summary>
        /// The table_ unique indexes.
        /// </summary>
        [EnumMember]
        Table_UniqueIndexes = 1024,

        /// <summary>
        /// The table_ unique keys.
        /// </summary>
        [EnumMember]
        Table_UniqueKeys = 2048
    }

    #endregion ScriptType

    /// <summary>
    /// The compare option control type.
    /// </summary>
    [DataContract]
    public enum CompareOptionControlType
    {
        /// <summary>
        /// The text box.
        /// </summary>
        [EnumMember]
        TextBox,

        /// <summary>
        /// The check box.
        /// </summary>
        [EnumMember]
        CheckBox,

        /// <summary>
        /// The list control type.
        /// </summary>
        [EnumMember]
        List
    }

    /// <summary>
    /// The option type.
    /// </summary>
    [DataContract]
    public enum OptionType
    {
        /// <summary>
        /// The server option.
        /// </summary>
        [EnumMember]
        ServerOption,

        /// <summary>
        /// The database option.
        /// </summary>
        [EnumMember]
        DatabaseOption,

        /// <summary>
        /// The database object options.
        /// </summary>
        [EnumMember]
        DatabaseObjectOptions,

        /// <summary>
        /// The scripting.
        /// </summary>
        [EnumMember]
        Scripting,

        /// <summary>
        /// The misc option.
        /// </summary>
        [EnumMember]
        Misc
    }

    /// <summary>
    /// The auth type.
    /// </summary>
    [DataContract]
    public enum AuthType
    {
        /// <summary>
        /// The sql auth.
        /// </summary>
        [EnumMember]
        Sql,

        /// <summary>
        /// The win auth.
        /// </summary>
        [EnumMember]
        Win,

        /// <summary>
        /// The azure auth.
        /// </summary>
        [EnumMember]
        Azure
    }

    /// <summary>
    /// Database objects
    /// </summary>
    [DataContract]
    public enum DatabaseObjectTypes
    {
        /// <summary>
        /// The tbl table.
        /// </summary>
        [EnumMember]
        Table = 0,

        /// <summary>
        /// The tbl function.
        /// </summary>
        [EnumMember]
        Function,

        /// <summary>
        /// The tbl replication procedure.
        /// </summary>
        [EnumMember]
        ReplicationProcedure,

        /// <summary>
        /// The tbl procedure.
        /// </summary>
        [EnumMember]
        Procedure,

        /// <summary>
        /// The tbl trigger.
        /// </summary>
        [EnumMember]
        Trigger,

        /// <summary>
        /// The tbl view.
        /// </summary>
        [EnumMember]
        View,

        /// <summary>
        /// The tbl details.
        /// </summary>
        [EnumMember]
        Details,

        /// <summary>
        /// The tbl fields.
        /// </summary>
        [EnumMember]
        Fields,

        /// <summary>
        /// The tbl check.
        /// </summary>
        [EnumMember]
        Check,

        /// <summary>
        /// The tbl index.
        /// </summary>
        [EnumMember]
        Index,

        /// <summary>
        /// The tbl foreign.
        /// </summary>
        [EnumMember]
        Foreign,

        /// <summary>
        /// The tbl database.
        /// </summary>
        [EnumMember]
        Database,

        /// <summary>
        /// The tbl server.
        /// </summary>
        [EnumMember]
        Server,

        /// <summary>
        /// The tbl rule.
        /// </summary>
        [EnumMember]
        Rule,

        /// <summary>
        /// The tbl default.
        /// </summary>
        [EnumMember]
        Default,

        /// <summary>
        /// The tbl default cnst.
        /// </summary>
        [EnumMember]
        DefaultCnst,

        /// <summary>
        /// The tbl udt.
        /// </summary>
        [EnumMember]
        UDT,

        /// <summary>
        /// The tbl user.
        /// </summary>
        [EnumMember]
        User,

        /// <summary>
        /// The tbl property.
        /// </summary>
        [EnumMember]
        Property,

        /// <summary>
        /// The tbl index key.
        /// </summary>
        [EnumMember]
        IndexKey,

        /// <summary>
        /// The tbl foreign key.
        /// </summary>
        [EnumMember]
        ForeignKey,

        /// <summary>
        /// The db diff.
        /// </summary>
        [EnumMember]
        Diff,

        /// <summary>
        /// The db diff details.
        /// </summary>
        [EnumMember]
        DiffDetails,

        /// <summary>
        /// The table filegroup
        /// </summary>
        [EnumMember]
        FileGroup,

        /// <summary>
        /// Computed columns
        /// </summary>
        [EnumMember]
        ComputedColumns,
    }

    /// <summary>
    /// The sql version internal.
    /// </summary>
    [DataContract]
    public enum SqlVersionInternal
    {
        /// <summary>
        /// The sql 7 version.
        /// </summary>
        [EnumMember]
        Sql7 = 7,

        /// <summary>
        /// The sql 2000 version.
        /// </summary>
        [EnumMember]
        Sql2000 = 8,

        /// <summary>
        /// The sql 2005.
        /// </summary>
        [EnumMember]
        Sql2005 = 9,

        /// <summary>
        /// The sql 2008.
        /// </summary>
        [EnumMember]
        Sql2008 = 10,

        /// <summary>
        /// The sql denali.
        /// </summary>
        [EnumMember]
        SqlDenali = 11
    }

    /// <summary>
    /// The database label.
    /// </summary>
    [DataContract]
    public enum DatabaseLabel
    {
        /// <summary>
        /// The database left.
        /// </summary>
        [EnumMember]
        Left = 0,

        /// <summary>
        /// The database right.
        /// </summary>
        [EnumMember]
        Right = 1
    }

    /// <summary>
    /// The data row compare index.
    /// </summary>
    [Serializable]
    public enum DataRowCompareIndex
    {
        /// <summary>
        /// The field.
        /// </summary>
        Field = 2,

        /// <summary>
        /// The index.
        /// </summary>
        Index = 2,

        /// <summary>
        /// The index key.
        /// </summary>
        IndexKey = 3,

        /// <summary>
        /// The foreign.
        /// </summary>
        Foreign = 2,

        /// <summary>
        /// The foreign key.
        /// </summary>
        ForeignKey = 3,

        /// <summary>
        /// The check.
        /// </summary>
        Check = 2,

        /// <summary>
        /// The database.
        /// </summary>
        Database = 2,

        /// <summary>
        /// The procedure
        /// </summary>
        Procedure = 2,

        /// <summary>
        /// The server.
        /// </summary>
        Server = 2,

        /// <summary>
        /// The default.
        /// </summary>
        Default = -1,

        /// <summary>
        /// The default cnst.
        /// </summary>
        DefaultCnst = -1,

        /// <summary>
        /// The rule not used.
        /// </summary>
        Rule = -1,

        /// <summary>
        /// The UserDefiniedTypeAlias.
        /// </summary>
        UserDefiniedTypeAlias = 2
    }
}